home *** CD-ROM | disk | FTP | other *** search
/ Practical Algorithms for Image Analysis / Practical Algorithms for Image Analysis.iso / TARFILE.GZ / tarfile / util / linux / tofrodos-1.1 / config.h next >
C/C++ Source or Header  |  1999-09-11  |  5KB  |  153 lines

  1. /*
  2.     config.h    Handles system dependencies.
  3.     Copyright (c) 1996 by Christopher S L Heng. All rights reserved.
  4.  
  5.     $Id: config.h 1.3 1996/06/22 20:00:07 chris Exp $
  6. */
  7.  
  8. /*
  9.     You need an ANSI C compiler. I assume this everywhere. If you
  10.     have a pre-ANSI C compiler, it's likely that you have to make
  11.     a lot of changes to the sources that you might as well just
  12.     rewrite the program. It *is* afterall a trivial program.
  13.  
  14.     I have not specifically designed this program so that it is
  15.     portable across systems. The comments below might help if you
  16.     are using anything other than the compilers I used to develop
  17.     the program. Note that the comments and macros in this file
  18.     about system dependencies are not necessarily exhaustive.
  19.  
  20.     1. These macros are defined for the following systems:
  21.     System                    Macros defined
  22.     ------                    --------------
  23.     LINUX                    LINUX, UNIX
  24.     MSDOS                    MSDOS
  25.  
  26.     2. You need a getopt() implementation. It must support the
  27.     usual behaviour of the Unix getopt(), plus the variables
  28.     optind, opterr, and optarg.
  29.  
  30.     If your system has the header <getopt.h>, define HAVE_GETOPT_H.
  31.     I have defined this for the systems I compile for.
  32.  
  33.     Note that if you use Borland C/C++ 3.1, you actually have getopt.c
  34.     on your system. (I don't know about later versions.) It's somewhere
  35.     in your examples directory. You'll have to create your own header
  36.     that declares getopt(), optind, opterr and optarg. With some
  37.     modifications, you might be able to get the getopt.c thing to
  38.     work for other DOS compilers too.
  39.  
  40.     If you want your DOS fromdos.exe and todos.exe to mimic the
  41.     behaviour of the precompiled versions, you need a getopt() that
  42.     can recognise both '-' and '/' as the option switch character.
  43.  
  44.     3. If your system has <unistd.h>, define HAVE_UNISTD_H. This is
  45.     usually relevant only for Unix systems, although the DJGPP GNU C
  46.     compiler has that too.
  47.  
  48.     4. Note that on MSDOS systems, you will need _splitpath()
  49.     and _makepath(). This means that if you're compiling using
  50.     DJGPP 1.X (GNU C), you'll need to either write replacements
  51.     for these functions or rewrite the code so that you don't need
  52.     them. I think the commercial C compilers have these functions.
  53.  
  54.     5. You will also need stricmp() and strnicmp() on MSDOS or
  55.     strcasecmp() or strncasecmp() on Unix. If you have stricmp() and/or
  56.     strnicmp() on a Unix system, define HAVE_STRICMP and/or
  57.     HAVE_STRNICMP respectively. I assume stricmp() for all non-Unix
  58.     systems so if you are neither compiling for Unix or MSDOS, you
  59.     better check out my macros below.
  60.  
  61.     6. You will need a mktemp(). On Unix systems, this is probably
  62.     declared in <unistd.h>.
  63.  
  64.     Borland declares mktemp() in dir.h. If you are writing or using
  65.     a replacement mktemp() you should put the prototype in a
  66.     header called mktemp.h and define HAVE_MKTEMP_H.
  67.  
  68.     If your compiler has mktemp() declared somewhere else (other
  69.     than unistd.h on Unix), define MKTEMP_HEADER to be the name
  70.     of the header, eg <whatever.h> (include the angle brackets or
  71.     double quotes), and HAVE_MKTEMP_H to force inclusion of the
  72.     header in the relevant files.
  73. */
  74.  
  75. #if !defined(CONFIG_H_INCLUDED)
  76. #define    CONFIG_H_INCLUDED
  77.  
  78. #if defined(__cplusplus)
  79. extern "C" {
  80. #endif
  81.  
  82. /* define the systems */
  83. #if defined(__linux__)    /* (predefined) */
  84. #if !defined(LINUX)
  85. #define    LINUX
  86. #endif
  87. #if !defined(UNIX)
  88. #define    UNIX        /* make sure this is defined */
  89. #endif
  90. #endif
  91.  
  92. #if defined(__MSDOS__)
  93. #if !defined(MSDOS)
  94. #define    MSDOS        /* make sure this is defined */
  95. #endif
  96. #endif
  97.  
  98. /* define what headers we have (based on the systems) */
  99. #if defined(LINUX)
  100. #define HAVE_GETOPT_H
  101. #define    HAVE_UNISTD_H
  102. #endif
  103.  
  104. #if defined(__WATCOMC__) /* this works on my system only */
  105. #if !defined(HAVE_GETOPT_H)
  106. #define    HAVE_GETOPT_H
  107. #endif
  108. #if !defined(HAVE_MKTEMP_H)
  109. #define    HAVE_MKTEMP_H
  110. #endif
  111. #if !defined(MKTEMP_HEADER)
  112. #define    MKTEMP_HEADER    <mktemp.h>
  113. #endif
  114. #endif
  115.  
  116. #if defined(__BORLANDC__)    /* Borland declares mktemp() in dir.h */
  117. #if !defined(HAVE_GETOPT_H)
  118. #define    HAVE_GETOPT_H
  119. #endif
  120. #if !defined(HAVE_MKTEMP_H)
  121. #define    HAVE_MKTEMP_H
  122. #endif
  123. #if !defined(MKTEMP_HEADER)
  124. #define    MKTEMP_HEADER    <dir.h>
  125. #endif
  126. #endif
  127.  
  128. /* if we are in Unix define stricmp to be strcasecmp and strnicmp to */
  129. /* be strncasecmp. I'm not sure if all Unices have these, but Linux */
  130. /* does. */
  131. #if defined(UNIX)
  132. #if !defined(HAVE_STRICMP)
  133. #define    stricmp     strcasecmp
  134. #endif
  135. #if !defined(HAVE_STRNICMP)
  136. #define    strnicmp    strncasecmp
  137. #endif
  138. #endif
  139.  
  140. /* Borland and Microsoft's compiler have S_IREAD and S_IWRITE in their */
  141. /* sys/stat.h instead of S_IRUSR and S_IWUSR which are used by the Unix */
  142. /* and Watcom compilers. */
  143. #if defined(__BORLANDC__)
  144. #define    S_IRUSR    S_IREAD
  145. #define    S_IWUSR    S_IWRITE
  146. #endif
  147.  
  148. #if defined(__cplusplus)
  149. }
  150. #endif
  151.  
  152. #endif
  153.